Computers and other devices may be networked together using any one of several available architectures and any one of several corresponding and compatible network protocols. A common network architecture is Ethernet, such as the 10Base-T and 100Base-TX Ethernet Standards according to the IEEE Standard 802.3, although an Ethernet architecture operating at 1 Gigabit per second (Gbps) is also available. In an Ethernet architecture, the computers each include a bus system with corresponding slots for receiving compatible network adapter expansion cards, where one or more of the adapter cards may be network interface cards (NICs).
Each NIC includes an appropriate connector, known as a port, for interfacing a compatible network cable, such as a coaxial cable, a twisted-wire cable, a fiber optic cable, etc. For example, in a star configuration, each NIC includes an RJ-45 connector for receiving a compatible RJ-45 plug of a twisted-wire cable, where each network cable is coupled to a central device such as a repeater, hub, switch, etc.
In a packet-switched configuration, each computer or device sends data packets according to a selected upper level protocol, such as Transmission Control Protocol/Internet Protocol (TCP/IP), the Internet Protocol exchange (IPX), NetBEUI or the like. NetBEUI is short for NetBIOS Enhanced User Interface, and is an enhanced version of the NetBIOS protocol used by network operating systems such as LAN Manager, LAN Server, Windows for Workgroups, Windows 95 and Windows NT. NetBEUI was originally designed by IBM for IBM's LAN Manager server and was later extended by Microsoft and Novell. TCP/IP is used in Internet applications, or in intranet applications such as a local area network (LAN). In this manner, computers and other devices share information according to the higher-level protocols.
One or more of the computers in a network configuration typically operate as a server for other computers and devices in the network. Often, the other computers and devices rely on the server(s) for information, storage, access to databases, programs, other networks, etc., and various other services. It is desired that the client/server connection be as reliable as possible. Where a computer is coupled to a network using a single network controller, if the network controller fails, the access to the server is interrupted.
It is also desired to provide as high a bandwidth client/server connection as possible, especially during periods of heavy demand and increased network traffic. A single network controller results in a bottleneck of data flow. Use of multiple network controllers is especially advantageous for servers. Servers communicate with numerous clients over a network, resulting in more transactions. Additionally, the amount of data transmitted from the server (downloaded) is usually much more than the amount of data transmitted from the client (uploaded).
Balancing the load between the ports is critical to enable communication between the computer and the port, and prevent communication faults. Current devices use intermediate drivers that operate below the computer operating systems and communicate with the miniport drivers. A miniport driver is a driver that interfaces hardware with higher level intermediate drivers. The miniport drivers are used to communicate with the NICs. Known intermediate drivers work well balancing a load across similar (homogeneous) NICs, but have trouble balancing the load between dissimilar NICs.
One currently known intermediate driver operates under the computer operating systems and balances the load between heterogeneous NICs. The intermediate driver operates below and communicates with a network driver interface specification (NDIS) which in turn communicates with two miniport driver instances. Each miniport driver in turn communicates with an NIC.
The foregoing advantageously provides for load balancing across dissimilar NICs. However, additional host overhead is required which affects performance. In some cases, performance efficiency degradation of as much as 50% has been measured when using an intermediate driver to perform load balancing.
Accordingly, it would be advantageous to exploit the advantages of using multiple ports, while minimizing resource overhead and avoiding performance degradation.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.